﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using vudu.Logica.Clases;
using vudu.Logica.Excepciones;
using System.Data;
using vudu.EnlaceDatos.SqlServer;


namespace vudu.PaginasWeb.G5Materia
{
    public partial class AgregarSeccionMateria : System.Web.UI.Page
    {
        private int _codigo;
        private List<String> periodos;
        private bool _seInserta;
        private string _profesor, _materia, _periodo;

        protected void Page_Load(object sender, EventArgs e)
        {
            //OBJETO SESSION 
            string miRol = (string)Session["rol"];
            if (miRol != "Escuela")
                Response.Redirect("../G3AccesoSistema/InicioSistema.aspx");
            Escuela esc = (Escuela)Session["Usuario"];
            nombreEscuela.Text = "Escuela: " + esc.NombreEscuela;
            //Inicializar labels

            LabelError.Text = "";
            LabelError.Visible = false;
            LabelMateria.Text = "";
            LabelMateria.Visible = false;
            LabelProfesor.Text = "";
            LabelProfesor.Visible = false;
            LabelNumSeccion.Text = "";
            LabelNumSeccion.Visible = false;
            LabelPeriodo.Text = "";
            LabelPeriodo.Visible = false;
            if (!IsPostBack)
            {
                cargarProfesores();
                cargarMateria();
                cargarPeriodo();
            }
   
        }

        public void cargarProfesores()
        {
            List<Profesor> profesores = new List<Profesor>();
            SeleccionarProfesor.Items.Clear();
            profesores = new SqlServerProfesor().ConsultarTodosLosProfesores();
            foreach (Profesor p in profesores)
            {
                SeleccionarProfesor.Items.Add(p.NombreCompleto);
            }
        }

        public void cargarMateria()
        {
            List<Materia> materias = new List<Materia>();
            materias = new SqlServerMateria().ConsultarTodasLasMaterias();
            foreach (Materia m in materias)
            {
                SeleccionarMateria.Items.Add(m.Nombre);
            }
        }

        public void cargarPeriodo()
        {
            periodos = new List<String>();
            Listaperiodos.Items.Clear();
            periodos = new SqlServerSeccionMateria().Periodos();
            foreach (String p in periodos)
            {
                Listaperiodos.Items.Add(p);
            }
        }

        protected void BotonAceptar_Click(object sender, EventArgs e)
        {
            //Se capturan todos los valores que introduce el usuario

            _seInserta = true;

            try
            {
                _codigo = Int32.Parse(TextNumSeccion.Text);
            }
            catch (Exception ex)
            {
                LabelNumSeccion.Text = "Datos incorrectos";
                LabelNumSeccion.Visible = true;
                _seInserta = false;
            }

            //asignacion de los comboboxes

            _profesor = SeleccionarProfesor.SelectedValue;
            _materia = SeleccionarMateria.SelectedValue;
            _periodo = Listaperiodos.SelectedValue;

            String fkMat = new SqlServerMateria().ConsultarMateria(_materia, 1).Codigo.ToString();

            String[] picarProfe = _profesor.Split(':');
            String fkProfe = picarProfe[1];

            String[] picarPeriodo = _periodo.Split(':');
            String fkPeriodo = picarPeriodo[0];

            Profesor d = new Profesor();
            d.Cedula = Int32.Parse(fkProfe);

            Materia m = new Materia();
            m.Codigo = Int32.Parse(fkMat);

            bool existe = new SqlServerSeccionMateria().ExisteLaSeccion(d, m, _codigo, fkPeriodo);
            if (existe == true)
                _seInserta = false;

            //Se construye un objeto de SeccionMateria basado en estos datos

            if (_seInserta == true)
            {
                SeccionMateria nueva = new SeccionMateria(_codigo, fkPeriodo, d, m);

                //Se inserta en la BD el registro creado

                bool seInserto = new SqlServerSeccionMateria().AgregarSeccionMateria(nueva);

                //Se verifica si fue exitoso o no!

                if (seInserto == true)
                {
                    LabelError.Text = "La seccion se agrego con exito";
                    LabelError.CssClass = "transaccionExitosa";
                    LabelError.ForeColor = System.Drawing.Color.Green;
                    LabelError.Visible = true;
                }
                else
                {
                    LabelError.Text = "Operacion Fallida: Error al insertar";
                    LabelError.CssClass = "transaccionFallida";
                    LabelError.ForeColor = System.Drawing.Color.Red;
                    LabelError.Visible = true;
                }

            }
            else
            {
                LabelError.Text = "Operacion Fallida: Omision de datos o seccion duplicada";
                LabelError.ForeColor = System.Drawing.Color.Red;
                LabelError.Visible = true;
            }

        }

        protected void SeleccionarMateria_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
    
           
    } //class

}